---
title: IDE Supported Features

description: Supported features for Pyrefly's IDE extension
---

# IDE Supported Features

Pyrefly’s language server powers a complete editing experience while **fully disabling Pylance**, ensuring no interference between checkers.

> Each feature below links to the [official LSP specification](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/) and shows what’s currently supported by Pyrefly.

---

### [Go to definition](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_definition)

Jump to where a symbol was originally defined with a click or <kbd>F12</kbd>. If there is both a `.pyi` and `.py` file, we will jump to the `.py`.
<video
  src="/videos/go-to-definition.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Go to type definition](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_typeDefinition)

Navigate to the underlying type of any expression. If the expression is a type, we will navigate to the `.pyi` file if both a `.py` and `.pyi` exist.
<video
  src="/videos/go-to-type-definition.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Go to declaration](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_declaration)

Navigate to where the type was defined, but stop at imports.
<video
  src="/videos/go-to-declaration.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Go to implementation](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_implementation)

On a method, navigate to all reimplementations.
<video
  src="/videos/go-to-implementation.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>
---


### [Find references](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_references)

List all usages of a symbol across your codebase.
<video
  src="/videos/find-all-references.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Document symbols](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_documentSymbol)

See an outline of all top-level items in the current file.
<video
  src="/videos/document-symbols.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Workspace symbols](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspace_symbol)

Search globally for functions, classes, and variables.
<video
  src="/videos/workspace-symbols.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Hover](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_hover)

See type info and docstrings when hovering over code.
<video
  src="/videos/hover.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Document highlights](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_documentHighlight)

Highlights all other instances of the symbol under your cursor.
<video
  src="/videos/document-highlights.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Signature help](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_signatureHelp)

Live function signatures as you type, with parameter hints.
<video
  src="/videos/signature-help.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Completion](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_completion)

Autocomplete suggestions for project-specific symbols and imports.
<video
  src="/videos/autocomplete.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Rename](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_rename)

Safely rename symbols project-wide.
<video
  src="/videos/rename.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

<!-- ### [Call hierarchy](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#callHierarchy_prepare)

Explore callers and callees of a method or function.
![Call hierarchy](../gifs/call-hierarchy.gif)

---
 -->

### [Diagnostics](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics)

Type errors and warnings from Pyrefly’s checker appear in the diagnostics pane ("Problems" pane in VSCode).
<video
  src="/videos/diagnostics.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Semantic tokens](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_semanticTokens)

Rich syntax highlighting based on token type and origin.
<video
  src="/videos/semantic-highlighting.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Inlay hints](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_inlayHint)

Inline hints for types, parameter names, and return values.

:::info
We reuse Pyright's `python.analysis.inlayHints.<>` settings for backwards compatibility. If you have or had Pyright, check these settings if inlay hints do not appear.
:::

You can turn inlay hints on or off using the [VSCode Setting](https://code.visualstudio.com/docs/editing/editingevolved#_inlay-hints) `editor.inlayHints.enabled`.


<video
  src="/videos/inlay-hints.mp4"
  width="720"
  muted
  loop
  autoPlay
  playsInline
  preload="metadata"
/>

---

### [Notebook support](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#notebookDocument)

Pyrefly provides language services for Jupyter notebooks directly in VS Code and also in Jupyter Lab.

In Jupyter Lab, once you install the [jupyterlab-lsp](https://jupyterlab-lsp.readthedocs.io/en/latest/Installation.html) extension, and Pyrefly will appear on the list of automatically-detected language servers.

Notebook support is experimental. Please report any bugs on our Github.

---

## Planned features

See [planned features and request your own](https://github.com/facebook/pyrefly/issues/344) on GitHub.
